/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package vccibernos;

import java.util.*;

/**
 *
 * @author JAVA
 */
public class Tienda {

    public static void login() {
        boolean valido = false;
        do {
            System.out.println("--------------------------");
            System.out.println("          LOGIN           ");
            System.out.println("--------------------------");
            String nom = ObtenerTeclado.dameCadena("Introduzca el nombre de usuario: ");
            int pass = ObtenerTeclado.dameEntero("Introduzca el pin");
            Empleado e = GestionEmpleado.login(nom, pass);
            if (e != null) {
                valido = true;
                if (e.getTipo().compareTo("Dependiente") == 0) {
                    menuPrincipalDependiente(e);
                } else if (e.getTipo().compareTo("Encargado") == 0) {
                    menuPrincipalEncargado(e);
                }
            } else {
                System.out.println("El usuario introducido no existe");
            }
        } while (!valido);
    }

    public static void menuPrincipalDependiente(Empleado d) {
        int i = 1;

        do {
            System.out.println("--------------------------");
            System.out.println("      MENU DEPENDIENTE    ");
            System.out.println("--------------------------");
            System.out.println("1. Alquiler Pelicula o Juego");
            System.out.println("2. Compra");
            System.out.println("3. Devolucion");
            System.out.println("4. Promociones");
            System.out.println("5. Alta/Baja de articulos");
            System.out.println("6. Alta/Baja de clientes");
            System.out.println("7. Modificar informacion de clientes");
            System.out.println("8. Saldo");
            System.out.println("9. Tarifas");
            System.out.println("10. Informes");
            System.out.println("11. Incidencias");
            System.out.println("0. Salir");

            i = ObtenerTeclado.dameEntero("Introduzca una opcion: ");
            //provisional hasta que pueda buscar en la persistencia un client epor su nif
            Cliente cl = null;
            switch (i) {

                case 1:
                    cl = menuInfoCliente2();
                    if (cl != null) {
                        System.out.println(cl.toString());
                        menuAlquiler(cl);
                    } else {
                        System.out.println("No ha elegido ningun cliente");
                    }
                    break;
                case 2:
                    menuCompra(d);
                    break;
                case 3:
                    cl = menuInfoCliente2();
                    if (cl != null) {
                        System.out.println(cl.toString());
                        menuDevolucion(cl);
                    } else {
                        System.out.println("No ha elegido ningun cliente");
                    }
                case 4:
                    menuPromociones();
                    break;

                case 5:
                    menuArticulos();
                    break;
                case 6:
                    menuAltaBajaCliente();
                    break;
                case 7:
                    menuInfoCliente();
                    break;
                case 8:
                    cl = menuInfoCliente2();
                    if (cl != null) {
                        System.out.println(cl.toString());
                        menuSaldo(cl);
                    } else {
                        System.out.println("No ha elegido ningun cliente");
                    }
                    break;
                case 9:

                    menuTarifa();
                    break;
                case 10:
                    menuInformes();
                    break;
                case 11:
                    menuIncidencias(d);
                    break;
                default:
                    System.out.println("\n Opcion incorrecta.");
                    break;
            }

        } while (i != 0);

    }

    public static void menuPrincipalEncargado(Empleado e) {

        int i = 1;

        do {
            System.out.println("--------------------------");
            System.out.println("       MENU ENCARGADO     ");
            System.out.println("--------------------------");
            System.out.println("1. Alquiler Pelicula o Juego");
            System.out.println("2. Compra");
            System.out.println("3. Devolucion");
            System.out.println("4. Promociones");
            System.out.println("5. Alta/Baja de articulos");
            System.out.println("6. Alta/Baja de clientes");
            System.out.println("7. Alta/Baja de proveedores");
            System.out.println("8. Alta/Baja de empleados");
            System.out.println("9. Alta/Baja de encargados");
            System.out.println("10. Modificar informacion de clientes");
            System.out.println("11. Saldo");
            System.out.println("12. Tarifas");
            System.out.println("13. Informes");
            System.out.println("14. Incidencias");
            System.out.println("0. Salir");

            i = ObtenerTeclado.dameEntero("Introduzca una opcion: ");
            //provisional hasta que pueda buscar en la persistencia un client epor su nif
            Cliente cl = null;
            switch (i) {

                case 1:
                    cl = menuInfoCliente2();
                    if (cl != null) {
                        System.out.println(cl.toString());
                        menuAlquiler(cl);
                    } else {
                        System.out.println("No ha elegido ningun cliente");
                    }
                    break;
                case 2:
                    menuCompra(e);
                    break;
                case 3:
                    cl = menuInfoCliente2();
                    if (cl != null) {
                        System.out.println(cl.toString());
                        menuDevolucion(cl);
                    } else {
                        System.out.println("No ha elegido ningun cliente");
                    }
                case 4:
                    menuPromociones();
                    break;

                case 5:
                    menuArticulos();
                    break;
                case 6:
                    menuAltaBajaCliente();
                    break;
                case 7:
                    menuProveedor();
                    break;
                case 8:
                    menuEmpleados();
                    break;
                case 9:
                    menuEncargado();
                    break;
                case 10:
                    menuInfoCliente();
                    break;
                case 11:
                    cl = menuInfoCliente2();
                    if (cl != null) {
                        System.out.println(cl.toString());
                        menuSaldo(cl);
                    } else {
                        System.out.println("No ha elegido ningun cliente");
                    }
                    break;
                case 12:
                    menuTarifa();
                    break;
                case 13:
                    menuInformes();
                    break;
                case 14:
                    menuIncidencias(e);
                    break;
                default:
                    System.out.println("\n Opcion incorrecta. ");
                    break;
            }

        } while (i != 0);

    }

    private static void menuAlquiler(Cliente cliente) {
        //Creo una lista de alquileres para poder añadir los alquileres
        List<Alquiler> listaAlquileres = new ArrayList();
        GestionAlquiler.mostrarAlquileresPendientes(cliente);
        int i = 1;
        do {

            System.out.println("--------------------------");
            System.out.println("      MENU ALQUILER    ");
            System.out.println("--------------------------");
            System.out.println("1. Buscar pelicula");
            System.out.println("2. Buscar juego");
            System.out.println("3. Mostrar peliculas alquiladas");
            System.out.println("4. Eliminar articulo de la lista de alquileres");
            System.out.println("5. Confirmar alquileres");
            System.out.println("6. Mostrar promociones");
            System.out.println("0. Salir");
            i = ObtenerTeclado.dameEntero("Introduzca una opcion");

            switch (i) {
                case 1:
                    submenuBusquedaPelicula(listaAlquileres);
                    break;
                case 2:
                    submenuBusquedaJuego(listaAlquileres);
                    break;
                case 3:
                    //Vamos a recorrer la lista de alquileres para ver los articulos que ha seleccionado
                    GestionAlquiler.mostrarArticulosSeleccionadas(listaAlquileres);
                    break;
                case 4:
                    int codigo = ObtenerTeclado.dameEntero("Introduzca el codigo del articulo a eliminar");
                    GestionAlquiler.EliminarAlquiler(listaAlquileres, codigo);
                    break;
                case 5:
                    GestionAlquiler.confirmar(cliente, listaAlquileres);
                    break;
                case 6:
                    GestionPromociones.mostrarPromocionesVigentes();
                    break;
                default:
                    System.out.println("\n Opcion incorrecta. ");
                    break;
            }

        } while (i != 0);
    }

    private static void submenuBusquedaPelicula(List<Alquiler> listaAlquileres) {
        int i = 1;
        do {
            System.out.println("---------------------------");
            System.out.println("      BUSQUEDA PELICULA    ");
            System.out.println("---------------------------");
            System.out.println("1. Mostrar novedades");
            System.out.println("2. Mostrar peliculas mejor valoradas");
            System.out.println("3. Busqueda por titulo");
            System.out.println("4. Busqueda por genero");
            System.out.println("5. Busqueda por año");
            System.out.println("6. Busqueda por director");
            System.out.println("7. Seleccionar pelicula");
            System.out.println("0. Salir");
            i = ObtenerTeclado.dameEntero("Introduzca una opcion: ");

            switch (i) {
                case 1:
                    GestionAlquiler.mostrarNovedades();
                    break;
                case 2:
                    GestionAlquiler.mostrarMejores();
                    break;
                case 3:
                    String titulo = ObtenerTeclado.dameCadena("Introduzca el titulo buscado");
                    GestionAlquiler.busquedaTitulo(titulo);
                    break;
                case 4:
                    String genero = ObtenerTeclado.dameCadena("Introduzca el genero buscado");
                    GestionAlquiler.busquedaGenero(genero);
                    break;
                case 5:
                    int anyo = ObtenerTeclado.dameAno("Introduzca el año buscado");
                    GestionAlquiler.busquedaAnyo(anyo);
                    break;
                case 6:
                    String director = ObtenerTeclado.dameCadena("Introduzca el director buscado");
                    GestionAlquiler.busquedaDirector(director);
                    break;
                case 7:
                    int cod = ObtenerTeclado.dameEntero("Introduzca el codigo de la pelicula seleccionada");
                    GestionAlquiler.AddAlquiler(listaAlquileres, cod);
                    //Salgo del submenu al menu de alquiler de pelicula
                    i = 0;
                    break;
                default:
                    System.out.println("\n Opcion incorrecta. ");
                    break;
            }
        } while (i != 0);

    }

    private static void submenuBusquedaJuego(List<Alquiler> listaAlquileres) {

        int i = 1;
        do {
            System.out.println("---------------------------");
            System.out.println("        BUSQUEDA JUEGO    ");
            System.out.println("---------------------------");
            System.out.println("1. Mostrar juegos mejor valorados");
            System.out.println("2. Busqueda por titulo");
            System.out.println("3. Busqueda por genero");
            System.out.println("4. Busqueda por soporte");
            System.out.println("5. Seleccionar juego");
            System.out.println("0. Salir");
            i = ObtenerTeclado.dameEntero("Introduzca una opcion");

            switch (i) {
                case 1:
                    GestionAlquiler.mostrarMejores();
                    break;
                case 2:
                    String titulo = ObtenerTeclado.dameCadena("Introduzca el titulo buscado");
                    GestionAlquiler.busquedaJuegoTitulo(titulo);
                    break;
                case 3:
                    String genero = ObtenerTeclado.dameCadena("Introduzca el genero buscado");
                    GestionAlquiler.busquedaJuegoGenero(genero);
                    break;
                case 4:
                    String soporte = ObtenerTeclado.dameCadena("Introduzca la plataforma buscada");
                    GestionAlquiler.busquedaJuegoSoporte(soporte);
                    break;
                case 5:
                    int codigo = ObtenerTeclado.dameEntero("Introduzca el codigo del juego para alquilar");
                    GestionAlquiler.AddAlquiler(listaAlquileres, codigo);
                    break;
                default:
                    System.out.println("\n Opcion incorrecta. ");
                    break;
            }

        } while (i != 0);
    }

    private static void menuDevolucion(Cliente cliente) {
        int i = 1;
        do {
            System.out.println("---------------------------");
            System.out.println("          DEVOLUCION       ");
            System.out.println("---------------------------");
            System.out.println("1. Mostrar peliculas pendientes");
            System.out.println("2. Devolver pelicula seleccionada");
            System.out.println("0. Salir");
            i = ObtenerTeclado.dameEntero("Introduzca una opcion");

            switch (i) {
                case 1:
                    GestionAlquiler.mostrarAlquileresPendientes(cliente);
                    break;
                case 2:
                    int cod = ObtenerTeclado.dameEntero("Introduzca el codigo del alquiler");
                    GestionAlquiler.devolverArticulo(cliente, cod);
                    float val = ObtenerTeclado.dameFloat("Introduzca la valoracion de la pelicula");
                    GestionAlquiler.valorarPelicula(cod, val);
                    break;
                default:
                    System.out.println("\n Opcion incorrecta. ");
                    break;
            }
        } while (i != 0);
    }

    public static void menuPromociones() {
        int j = 1;
        int k = 0;
        int i;
        int opc = 0;
        String tipoG;
        String tipoS;
        String descripcion;
        float porcentaje;
        int dias;
        Date fechaInicio = null;
        Date fechaFin = null;
        Tipo tipo = null;
        String descripcionTipo = null;

        do {
            System.out.println("---------------------------");
            System.out.println("        PROMOCIONES    ");
            System.out.println("---------------------------");
            System.out.println("1. Añadir Promocion");
            System.out.println("2. Borrar Promocion");
            System.out.println("3. Ver Promociones");
            System.out.println("4. Modificar una promocion");
            System.out.println("0. Salir");
            j = ObtenerTeclado.dameEntero("Introduzca una opcion:");

            switch (j) {

                case 1:
                    //Añadir promocion
                    System.out.println("---------------------------");
                    System.out.println("      AÑADIR PROMOCION    ");
                    System.out.println("---------------------------");
                    descripcion = ObtenerTeclado.dameCadena("Introduzca una descripcion de la promocion: ");
                    porcentaje = ObtenerTeclado.dameFloat("Introduzca un porcentaje de descuento (SIN EL SIMBOLO %): ");
                    dias = ObtenerTeclado.dameEntero("Introduzca un numero de dias extras para la promocion: ");
                    fechaInicio = ObtenerTeclado.dameFecha("Introduzca la fecha de inicio de la promocion-- Formato dd-mm-yyyy: ");
                    fechaFin = ObtenerTeclado.dameFecha("Introduzca la fecha de finalizacion de la promocion-- Formato dd-mm-yyyy");
                    //Muestra los tipos y un numero asociado para su introduccion por teclado


                    do {
                        Tipo t[] = Tipo.values();
                        for (i = 0; i < t.length; i++) {
                            System.out.println(" Numero: " + t[i].muestraMensaje() + " Tipo: " + t[i].name());
                        }

                        opc = ObtenerTeclado.dameEntero("Introduzca el numero del tipo de promocion");
                        switch (opc) {

                            case 1:
                                do {
                                    tipo = tipo.Genero;
                                    EnumGenero enumG[] = EnumGenero.values();

                                    for (i = 0; i < enumG.length; i++) {
                                        System.out.println("Genero: " + enumG[i].name());
                                    }

                                    tipoG = ObtenerTeclado.dameCadena("Introduzca el genero que desea asociar a la promocion");

                                    try {
                                        descripcionTipo = EnumGenero.valueOf(tipoG).toString();
                                    } catch (IllegalArgumentException Ex) {
                                        System.out.println(" Genero erroneo. Vuelva a introducirlo");
                                        descripcionTipo=null;
                                    }
                                } while (descripcionTipo == null);
                                break;

                            case 2:
                                tipo = tipo.Año;
                                break;

                            case 3:
                                do {
                                    tipo = tipo.Soporte;
                                    EnumSoporte enumS[] = EnumSoporte.values();

                                    for (i = 0; i < enumS.length; i++) {
                                        System.out.println("Soporte: " + enumS[i].name());
                                    }

                                    tipoS = ObtenerTeclado.dameCadena("Introduzca el soporte que desea asociar a la promocion");

                                    try {
                                        descripcionTipo = EnumSoporte.valueOf(tipoS).toString();
                                        System.out.println("descri8pcion "+descripcionTipo);
                                    } catch (IllegalArgumentException Ex) {
                                        System.out.println(" Soporte erroneo. Vuelva a introducirlo");
                                        descripcionTipo=null;
                                    }
                                } while (descripcionTipo == null);
                                break;

                            case 4:

                                tipo = tipo.Director;
                                break;

                            default:
                                System.out.println("\n Opcion incorrecta. ");
                                opc=0;
                                break;
                        }
                    } while (opc == 0);

                    GestionPromociones.addPromocion(descripcion, porcentaje, dias, fechaInicio, fechaFin, tipo, descripcionTipo);
                    break;


                case 2:
                    System.out.println("---------------------------");
                    System.out.println("      ELIMINAR PROMOCION    ");
                    System.out.println("---------------------------");
                    GestionPromociones.mostrarPromociones();
                    int codigo = ObtenerTeclado.dameEntero("Introduzca el codigo de la promocion a eliminar");
                    System.out.println("¿Seguro que desea la promocion con el id: " + codigo + "?");
                    System.out.println("1. Si");
                    System.out.println("2. No");
                    System.out.println("Por defecto: promocion no borrada");
                    int s = ObtenerTeclado.dameEntero("Introduzca opcion");
                    switch (s) {
                        case 1:
                            GestionPromociones.borrarPromocion(codigo);
                            break;
                        case 2:
                            System.out.println("Promocion no borrada");
                            break;
                        default:
                            System.out.println("Promocion no borrada");
                            break;
                    }
                    break;
                case 3:
                    System.out.println("---------------------------");
                    System.out.println("    MOSTRAR PROMOCIONES    ");
                    System.out.println("---------------------------");
                    GestionPromociones.mostrarPromociones();
                    break;

                case 4:
                    System.out.println("---------------------------");
                    System.out.println("    MODIFICAR PROMOCIONES  ");
                    System.out.println("---------------------------");
                    GestionPromociones.mostrarPromociones();
                    codigo = ObtenerTeclado.dameEntero("Introduzca la promocion a modificar");
                    System.out.println("1. Modificar descripcion");
                    System.out.println("2. Modificar porcentaje");
                    System.out.println("3. Modificar dias extras");
                    System.out.println("4. Modificar fecha de fin");
                    System.out.println("5. Modificar tipo");
                    System.out.println("6. Modificar fecha de inicio");
                    System.out.println("0. Salir");
                    int op = ObtenerTeclado.dameEntero("Introduzca la opcion elegida");

                    switch (op) {
                        case 1:
                            String valor = ObtenerTeclado.dameCadena("Introduzca el nuevo valor");
                            GestionPromociones.modificarGenerico(codigo, "descripcion", valor);
                            break;
                        case 2:
                            valor = ObtenerTeclado.dameCadena("Introduzca el nuevo valor");
                            GestionPromociones.modificarGenerico(codigo, "porcentaje", valor);
                            break;
                        case 3:
                            valor = ObtenerTeclado.dameCadena("Introduzca el nuevo valor");
                            GestionPromociones.modificarGenerico(codigo, "dias", valor);
                            break;
                        case 4:
                            Date fin = ObtenerTeclado.dameFecha("Introduzca la nueva fecha de fin en formato dd-mm-yyyy");
                            GestionPromociones.modificarFechaFin(codigo, "fechaFin", fin);
                            break;
                        case 5:
                            //Muestra los tipos y un numero asociado para su introduccion por teclado
                            Tipo ti[] = Tipo.values();
                            for (i = 0; i < ti.length; i++) {
                                System.out.println("Tipo: " + ti[i].name() + " Numero: " + ti[i].muestraMensaje());
                            }
                            opc = ObtenerTeclado.dameEntero("Introduzca el numero del tipo de promocion");

                            switch (opc) {

                                case 1:

                                    tipo = tipo.Genero;
                                    break;

                                case 2:

                                    tipo = tipo.Año;
                                    break;

                                case 3:

                                    tipo = tipo.Soporte;
                                    break;

                                case 4:

                                    tipo = tipo.Director;
                                    break;

                                default:
                                    System.out.println("\n Opcion incorrecta. ");
                                    break;
                            }
                            GestionPromociones.modificarGenerico(codigo, "tipo", tipo.name());
                            break;

                        case 6:
                            Date inicio = ObtenerTeclado.dameFecha("Introduzca la nueva fecha de inicio en formato dd-mm-yyyy");
                            GestionPromociones.modificarFechaFin(codigo, "fechaInicio", inicio);
                            break;
                        default:
                            System.out.println("\n Opcion incorrecta. ");
                            break;


                    }

                    break;
                default:
                    System.out.println("Opcion incorrecta");
                    break;
            }
            /*} catch (Exception ex) {
            System.out.println("Fecha erronea");
            }*/

        } while (j != 0);
    }

    public static void menuAltaBajaCliente() {
        int j = 1;
        do {
            System.out.println("-------------------------------");
            System.out.println("    MENU ALTA/BAJA CLIENTES    ");
            System.out.println("-------------------------------");
            System.out.println("1. Dar de Alta a un Cliente");
            System.out.println("2. Dar de Baja a un Cliente");
            System.out.println("0. Salir");
            j = ObtenerTeclado.dameEntero("Selecciona la opcion: ");


            switch (j) {
                case 1:
                    System.out.println("-------------------------------");
                    System.out.println("           ALTA CLIENTE        ");
                    System.out.println("-------------------------------");
                    GestionCliente.altaCliente();
                    break;
                case 2:
                    System.out.println("-------------------------------");
                    System.out.println("           BAJA CLIENTE        ");
                    System.out.println("-------------------------------");
                    System.out.println("Menú Información Cliente----------------");
                    System.out.println("");
                    System.out.println("Busqueda por Criterio");
                    System.out.println("");
                    System.out.println("1. Buscar por Nombre");
                    System.out.println("2. Buscar por Apellido");
                    System.out.println("3. Buscar por Dni");
                    System.out.println("4. Busqueda por Pin");
                    System.out.println("5. Busqueda por Nombre de Usuario");
                    System.out.println("0. Salir");
                    j = ObtenerTeclado.dameEntero("Selecciona la opcion: ");


                    System.out.println(" ");
                    String s = "";
                    switch (j) {
                        case 1:
                            //método para seleccionar un cliente por el nombre
                            s = ObtenerTeclado.dameCadena("Introduce el Nombre para la Búsqueda: ");
                            break;
                        case 2:
                            //método para seleccionar un cliente por el apellido
                            s = ObtenerTeclado.dameCadena("Introduce los Apellidos para la Búsqueda: ");
                            break;
                        case 3:
                            //método para seleccionar un cliente por el dni
                            s = ObtenerTeclado.dameCadena("Introduce el Dni para la Búsqueda: ");
                            break;
                        case 4:
                            //método para seleccionar un cliente por el pin de usuario
                            s = ObtenerTeclado.dameCadena("Introduce el Pin para la Búsqueda: ");
                            break;
                        case 5:
                            //método para seleccionar un cliente por el nombre de usuario
                            s = ObtenerTeclado.dameCadena("Introduce el Nombre de Usuario para la Búsqueda: ");
                            break;

                        default:
                            System.out.println("\n Opcion incorrecta. ");
                            break;
                    }
                    ArrayList<Cliente> listaClientes = GestionCliente.buscaClientes(j, s);
                    if (listaClientes.isEmpty()) {
                        System.out.println("No existe ningún Socion con esos Datos!!");
                    } else {
                        j = ObtenerTeclado.dameEntero("Introduce el Id del Cliente para Continuar ó Introduce 0 para Salir");
                        Cliente c = GestionCliente.seleccionaCliente(listaClientes, j);
                        GestionCliente.bajaCliente(c);
                    }
                    break;
                case 0:
                    j = 0;
                    break;
                default:
                    break;
            }
        } while (j != 0);
    }

    public static Cliente menuInfoCliente2() {
        int j = 1;
        Cliente c = null;

        System.out.println("-------------------------------");
        System.out.println("       INFORMACION CLIENTE     ");
        System.out.println("-------------------------------");
        System.out.println("");
        System.out.println("Busqueda por Criterio");
        System.out.println("");
        System.out.println("1. Buscar por Nombre");
        System.out.println("2. Buscar por Apellido");
        System.out.println("3. Buscar por Dni");
        System.out.println("4. Busqueda por id");
        System.out.println("5. Busqueda por Nombre de Usuario");
        System.out.println("0. Salir");
        j = ObtenerTeclado.dameEntero("Selecciona la opcion: ");


        System.out.println(" ");
        String s = "";
        switch (j) {
            case 1:
                //método para seleccionar un cliente por el nombre
                s = ObtenerTeclado.dameCadena("Introduce el Nombre para la Búsqueda: ");
                break;
            case 2:
                //método para seleccionar un cliente por el apellido
                s = ObtenerTeclado.dameCadena("Introduce los Apellidos para la Búsqueda: ");
                break;
            case 3:
                //método para seleccionar un cliente por el dni
                s = ObtenerTeclado.dameCadena("Introduce el Dni para la Búsqueda: ");
                break;
            case 4:
                //método para seleccionar un cliente por el pin de usuario
                s = ObtenerTeclado.dameCadena("Introduce el id para la Búsqueda: ");
                break;
            case 5:
                //método para seleccionar un cliente por el nombre de usuario
                s = ObtenerTeclado.dameCadena("Introduce el Nombre de Usuario para la Búsqueda: ");
                break;

            default:
                System.out.println("\n Opcion incorrecta. ");
                break;
        }
        ArrayList<Cliente> listaClientes = GestionCliente.buscaClientes(j, s);
        if (listaClientes.isEmpty()) {
            System.out.println("No existe ningún Socio con esos Datos!!");
        } else {
            j = ObtenerTeclado.dameEntero("Introduce el Id del Cliente para Continuar ó Introduce 0 para Salir");
            c = GestionCliente.seleccionaCliente(listaClientes, j);
        }
        return c;
    }

    public static void menuInfoCliente() {

        int j = 1;
        do {
            do {
                System.out.println("Menú Información Cliente----------------");
                System.out.println("");
                System.out.println("Busqueda por Criterio");
                System.out.println("");
                System.out.println("1. Buscar por Nombre");
                System.out.println("2. Buscar por Apellido");
                System.out.println("3. Buscar por Dni");
                System.out.println("4. Busqueda por Id");
                System.out.println("5. Busqueda por Nombre de Usuario");
                System.out.println("0. Salir");
                j = ObtenerTeclado.dameEntero("Selecciona la opcion: ");
            } while (j != 1 || j != 2 || j != 3 || j != 4 || j != 5 || j != 0);


            System.out.println(" ");
            String s = "";
            switch (j) {
                case 1:
                    //método para seleccionar un cliente por el nombre
                    s = ObtenerTeclado.dameCadena("Introduce el Nombre para la Búsqueda: ");
                    break;
                case 2:
                    //método para seleccionar un cliente por el apellido
                    s = ObtenerTeclado.dameCadena("Introduce los Apellidos para la Búsqueda: ");
                    break;
                case 3:
                    //método para seleccionar un cliente por el dni
                    s = ObtenerTeclado.dameCadena("Introduce el Dni para la Búsqueda: ");
                    break;
                case 4:
                    //método para seleccionar un cliente por el pin de usuario
                    s = ObtenerTeclado.dameCadena("Introduce el Id para la Búsqueda: ");
                    break;
                case 5:
                    //método para seleccionar un cliente por el nombre de usuario
                    s = ObtenerTeclado.dameCadena("Introduce el Nombre de Usuario para la Búsqueda: ");
                    break;

                default:
                    System.out.println("\n Opcion incorrecta. ");
                    break;
            }
            ArrayList<Cliente> listaClientes = GestionCliente.buscaClientes(j, s);
            if (listaClientes.isEmpty()) {
                System.out.println("No existe ningún Socion con esos Datos!!");
            } else {
                j = ObtenerTeclado.dameEntero("Introduce el Id del Cliente para Continuar ó Introduce 0 para Salir");
                Cliente c = GestionCliente.seleccionaCliente(listaClientes, j);
                do{
                    do {
                        System.out.println("----------------------");
                        System.out.println("");
                        System.out.println("1. Mostrar Datos");
                        System.out.println("2. Modificar el Saldo");
                        System.out.println("3. Modificar Otros Campos");
                        System.out.println("0. Salir");
                        System.out.println("");
                        j = ObtenerTeclado.dameEntero("Selecciona una Opcion: ");
                    } while (j != 1 || j != 2 || j != 3 || j != 0);
                switch (j) {
                    case 1:
                        GestionCliente.mostrarDatosCliente(c);
                        break;
                    case 2:
                            System.out.println("-------------------------------");
                            System.out.println("       SALDO CLIENTE     ");
                            System.out.println("-------------------------------");
                            GestionCliente.modificarSaldoCliente(c);
                            break;
                    case 3:
                        int k = 1;
                        do {
                            do {
                                System.out.println("-------------------------------");
                                System.out.println("       MODIFICAR CLIENTE     ");
                                System.out.println("-------------------------------");
                                System.out.println("1. Modificar Nombre");
                                System.out.println("2. Modificar Apellidos");
                                System.out.println("3. Modificar Dni");
                                System.out.println("4. Modificar Domicilio");
                                System.out.println("5. Modificar Teléfono");
                                System.out.println("6. Modificar E-mail");
                                System.out.println("7. Modificar Vip, No Vip");
                                System.out.println("8. Modificar Nombre de Usuario");
                                System.out.println("9. Modificar Pin");
                                System.out.println("0. Salir");
                                System.out.println(" ");
                                k = ObtenerTeclado.dameEntero("Selecciona la Opcion: ");
                            } while (k != 1 || k != 2 || k != 3 || k != 4 || k != 5 || k != 6 || k != 7 || k != 8 || k != 9 || k != 0);
                            GestionCliente.modificarOtrosDatosCliente(c, k);
                            break;
                        
                            } while (k != 0);
                        default:
                            System.out.println("\n Opcion incorrecta. ");
                            break;
                    }
                } while (j != 0);
            }
        } while (j != 0);
    }

    private static void menuCompra(Empleado e) {

        int j = 1;
        int codarticulo;
        String resp;
        String dni;
        String nombre;
        Articulo articulo;
        String confirmacion;

        nombre = ObtenerTeclado.dameCadena("Introduzca el nombre: ");
        dni = ObtenerTeclado.dameCadena("Introduzca el dni: ");
        Compra compra = new Compra(new Date(), nombre, dni);

        do {
            System.out.println("-------------------------------");
            System.out.println("            MENU COMPRA        ");
            System.out.println("-------------------------------");
            System.out.println("1. Añadir articulo");
            System.out.println("2. Borrar articulo");
            System.out.println("3. Ver listado");
            System.out.println("4. Confirmar Compra");
            System.out.println("5. Cancelar Compra");
            System.out.println("0. Salir");
            j = ObtenerTeclado.dameEntero("Introduzca una opcion: ");

            switch (j) {

                case 1:
                    System.out.println("-------------------------------");
                    System.out.println("          AÑADIR ARTICULO      ");
                    System.out.println("-------------------------------");
                    if (GestionArticulo.mostrarArticulosSeVenden() == 0) {


                        System.out.println("NO HAY ARTICULOS DISPONIBLES");
                        j = 0;
                        break;

                    }

                    codarticulo = ObtenerTeclado.dameEntero("Introduzca el codigo del articulo, de la lista anterior: ");
                    GestionCompra.añadirArticulo(codarticulo, compra);
                    break;

                case 2:
                    System.out.println("-------------------------------");
                    System.out.println("         ELIMINAR ARTICULO     ");
                    System.out.println("-------------------------------");
                    codarticulo = ObtenerTeclado.dameEntero("Introduzca el codigo del articulo a borrar de la lista");
                    confirmacion = ObtenerTeclado.dameCadena("¿Esta seguro que desea eliminar el articulo" + codarticulo + "? (SI/NO)");

                    if (confirmacion.equals("SI") || confirmacion.equals("si")) {
                        GestionCompra.borrarArticulo(codarticulo, compra);
                    }
                    break;

                case 3:
                    System.out.println("-------------------------------");
                    System.out.println("              VER LISTA         ");
                    System.out.println("-------------------------------");
                    GestionCompra.verLista(compra);
                    break;

                case 4:
                    System.out.println("-------------------------------");
                    System.out.println("         CONFIRMACION COMPRA   ");
                    System.out.println("-------------------------------");
                    GestionCompra.confirmacion(e, compra);
                    j = 0;
                    break;

                case 5:
                    System.out.println("-------------------------------");
                    System.out.println("         CANCELAR COMPRA       ");
                    System.out.println("-------------------------------");
                    resp = ObtenerTeclado.dameCadena("¿Seguro que desea cancelar la compra? (SI/NO)");
                    if (resp.compareTo("SI") == 0 || resp.compareTo("si") == 0) {
                        GestionCompra.deshacerCompra(compra);
                    } else {
                        break;
                    }
                    j = 0;
                    break;


                default:
                    System.out.println("Opcion incorrecta");
                    break;

            }

        } while (j != 0);

    }

    public static void menuArticulos() {
        int i;
        int tar = 0;
        int prov = 0;
        String nomprov;
        boolean venta = false;
        do {
            System.out.println("-------------------------------");
            System.out.println("          MENU ARTICULOS       ");
            System.out.println("-------------------------------");
            System.out.println("1. Alta de articulo");
            System.out.println("2. Baja de articulo");
            System.out.println("3. Ver Articulos");
            System.out.println("0. Salir");
            i = ObtenerTeclado.dameEntero("Introduzca la opcion elegida");

            switch (i) {
                case 1:
                    int op = 1;

                    do {

                        System.out.println("-------------------------------");
                        System.out.println("          ALTA ARTICULOS       ");
                        System.out.println("-------------------------------");
                        System.out.println("1. Alta de juego");
                        System.out.println("2. Alta de pelicula");
                        System.out.println("3. Otro articulo");
                        op = ObtenerTeclado.dameEntero("Introduzca la opcion elegida");

                    } while (op < 1 && op > 3);

                    if (op == 1 || op == 2) {

                        int venta1 = ObtenerTeclado.dameEntero("Introduzca 1 si el articulo es para la venta \n "
                                + "Introduzca 0 si el articulo es solo para alquilar");
                        //Si introduce mal el numero por defecto es 0
                        if (venta1 != 0 || venta1 != 1) {
                            venta1 = 0;
                            if (venta1 == 1) {
                                venta = true;
                            } else {
                                venta = false;
                            }
                        }
                    }

                    //Para dar de alta un articulo hace falta tanto un proveedor como una tarifa
                    //Si no hay proveedor o tarifa no puedo dar de alta el articulo


                    System.out.println("Selecciona un proveedor introduciendo su codigo");
                    int numProv = GestionProveedor.mostrarProveedores();
                    //Si existe algun proveedor
                    if (numProv > 0) {
                        prov = ObtenerTeclado.dameEntero("Introduzca el codigo del proveedor \n SI DESEA AÑADIR UN NUEVO PROVEEDOR INTRODUZA 0 \n Al añadir un nuevo proveedor volvera al menu principal de alta/baja Articulos");

                        if (prov == 0) {
                            nomprov = ObtenerTeclado.dameCadena("Introduzca el nombre del proveedor: ");
                            GestionProveedor.altaProveedor(nomprov);
                            break;
                        }
                        System.out.println("Selecciona una tarifa introduciendo su codigo");
                        int numTar = GestionTarifa.mostrarTarifas();
                        //Si existe alguna tarifa
                        if (numTar > 0) {
                            tar = ObtenerTeclado.dameEntero("Introduzca su codigo \n SI DESEA AÑADIR UNA NUEVA TARIFA INTRODUZA 0 \n Al añadir un nuevo proveedor volvera al menu principal de alta/baja Articulos ");

                            if (tar == 0) {
                                String desc = ObtenerTeclado.dameCadena("Introduzca la descripcion: ");
                                Float pA = ObtenerTeclado.dameFloat("Introduzca el precio de alquiler: ");
                                Float pV = ObtenerTeclado.dameFloat("Introduzca el precio de venta: ");
                                int dias = ObtenerTeclado.dameEntero("Introduzca los dias que permite de alquiler la tarifa: ");
                                GestionTarifa.addTarifa(desc, pA, pV, dias);
                                break;
                            }

                        } else {
                            System.out.println("Debe dar de alta un proveedor primero");

                        }
                    } else {
                        System.out.println("Debe dar de alta una tarifa primero");
                    }

                    switch (op) {
                        case 1:
                            System.out.println("-------------------------------");
                            System.out.println("            ALTA JUEGO         ");
                            System.out.println("-------------------------------");
                            String titulo = ObtenerTeclado.dameCadena("Introduzca el titulo");
                            String soporte = ObtenerTeclado.dameCadena("Introduzca el soporte");
                            String genero = ObtenerTeclado.dameCadena("Introduzca el genero");
                            int edadM = ObtenerTeclado.dameEntero("Introduzca la edad minima");
                            GestionArticulo.altaJuego(prov, tar, titulo, soporte, genero, edadM, venta);
                            break;
                        case 2:
                            System.out.println("-------------------------------");
                            System.out.println("          ALTA PELICULA       ");
                            System.out.println("-------------------------------");
                            titulo = ObtenerTeclado.dameCadena("Introduzca el titulo");
                            genero = ObtenerTeclado.dameCadena("Introduzca el genero");
                            String director = ObtenerTeclado.dameCadena("Introduzca el director");
                            int ano = ObtenerTeclado.dameAno("Introduzca el año");
                            int duracion = ObtenerTeclado.dameEntero("Introduzca duracion en minutos");
                            String actores = ObtenerTeclado.dameCadena("Introduzca los actores separados por comas");
                            edadM = ObtenerTeclado.dameEntero("Introduzca la edad minima");
                            GestionArticulo.altaPelicula(prov, tar, titulo, genero, director, ano, duracion, actores, edadM, venta);
                            break;
                        case 3:
                            System.out.println("-------------------------------");
                            System.out.println("          ALTA ARTICULOS       ");
                            System.out.println("-------------------------------");
                            titulo = ObtenerTeclado.dameCadena("Introduzca el nombre del articulo");
                            GestionArticulo.altaArtVenta(prov, tar, titulo);
                            break;

                        default:
                            System.out.println("\n Opcion incorrecta. ");
                            break;
                    }

                    break;
                case 2:
                    int opc = 1;
                    do {
                        System.out.println("-------------------------------");
                        System.out.println("         ELIMINAR ARTICULO      ");
                        System.out.println("-------------------------------");
                        System.out.println("1. Eliminar Pelicula");
                        System.out.println("2. Eliminar Juego");
                        System.out.println("3. Eliminar Atriculo de Venta");
                        System.out.println("0. Salir");
                        opc = ObtenerTeclado.dameEntero("Introduzca la opcion deseada: ");

                        switch (opc) {

                            case 1:
                                GestionArticulo.mostrarPelicula();
                                System.out.println("-------------------------------");
                                System.out.println("         ELIMINAR PELICULA      ");
                                System.out.println("-------------------------------");
                                int cod = ObtenerTeclado.dameEntero("Introduzca el codigo de la pelicula a eliminar");
                                System.out.println("¿Seguro que desea borrar la pelicula con codigo " + cod + "?");
                                System.out.println("1. Si");
                                System.out.println("2. No");
                                int s = ObtenerTeclado.dameEntero("Introduzca opcion");
                                switch (s) {
                                    case 1:
                                        GestionArticulo.borrarArticulo(cod);
                                        break;
                                    case 2:
                                        System.out.println("Articulo no borrado");
                                        break;
                                    default:
                                        System.out.println("Articulo no borrado");
                                        break;
                                }
                                break;

                            case 2:
                                System.out.println("-------------------------------");
                                System.out.println("          ELIMINAR JUEGO       ");
                                System.out.println("-------------------------------");
                                GestionArticulo.mostrarJuego();

                                cod = ObtenerTeclado.dameEntero("Introduzca el codigo del juego a eliminar");
                                System.out.println("¿Seguro que desea borrar el juego con codigo " + cod + "?");
                                System.out.println("1. Si");
                                System.out.println("2. No");
                                s = ObtenerTeclado.dameEntero("Introduzca opcion");
                                switch (s) {
                                    case 1:
                                        GestionArticulo.borrarArticulo(cod);
                                        break;
                                    case 2:
                                        System.out.println("Articulo no borrado");
                                        break;
                                    default:
                                        System.out.println("Articulo no borrado");
                                        break;
                                }
                                break;

                            case 3:
                                System.out.println("-------------------------------");
                                System.out.println("         ELIMINAR ARTICULO      ");
                                System.out.println("-------------------------------");
                                GestionArticulo.mostrarArticuloVenta();
                                cod = ObtenerTeclado.dameEntero("Introduzca el codigo del articulo a eliminar");
                                System.out.println("¿Seguro que desea borrar el articulo con codigo " + cod + "?");
                                System.out.println("1. Si");
                                System.out.println("2. No");
                                s = ObtenerTeclado.dameEntero("Introduzca opcion");
                                switch (s) {
                                    case 1:
                                        GestionArticulo.borrarArticulo(cod);
                                        break;
                                    case 2:
                                        System.out.println("Articulo no borrado");
                                        break;
                                    default:
                                        System.out.println("Articulo no borrado");
                                        break;
                                }
                                break;

                            default:
                                System.out.println("\n Opcion incorrecta. ");
                                break;

                        }
                    } while (opc != 0);
                    break;

                case 3:

                    opc = 1;
                    do {
                        System.out.println("-------------------------------");
                        System.out.println("         MOSTRAR ARTICULOS      ");
                        System.out.println("-------------------------------");
                        System.out.println("1. Mostrar Juegos");
                        System.out.println("2. Mostrar Peliculas");
                        System.out.println("3. Mostrar Atriculos de Venta");
                        opc = ObtenerTeclado.dameEntero("Introduzca la opcion deseada: ");

                        switch (opc) {

                            case 1:
                                System.out.println("-------------------------------");
                                System.out.println("           MOSTRAR JUEGOS      ");
                                System.out.println("-------------------------------");
                                GestionArticulo.mostrarJuego();
                                break;

                            case 2:
                                System.out.println("-------------------------------");
                                System.out.println("          MOSTRAR PELICULA      ");
                                System.out.println("-------------------------------");
                                GestionArticulo.mostrarPelicula();
                                break;

                            case 3:
                                System.out.println("-------------------------------");
                                System.out.println("   MOSTRAR ARTICULOS DE VENTAS  ");
                                System.out.println("-------------------------------");
                                GestionArticulo.mostrarArticuloVenta();
                                break;
                            default:
                                System.out.println("\n Opcion incorrecta. ");
                                break;
                        }

                    } while (opc < 1 || opc > 3);
                    break;

            }

        } while (i != 0);
    }

    public static void menuInformes() {
        int i = 1;
        do {
            System.out.println("-------------------------------");
            System.out.println("           MENU INFORMES       ");
            System.out.println("-------------------------------");
            System.out.println("1. Informes de Ejemplares");
            System.out.println("2. Informes de Alquileres");
            System.out.println("0. Salir");
            i = ObtenerTeclado.dameEntero("Introduce la opcion elegida: ");
            switch (i) {
                case 1:
                    System.out.println("-------------------------------");
                    System.out.println("       INFORME EJEMPLARES      ");
                    System.out.println("-------------------------------");
                    GestionInformes.informeEjemplares();
                    break;
                case 2:
                    System.out.println("-------------------------------");
                    System.out.println("         INFORME ALQUILERES     ");
                    System.out.println("-------------------------------");
                    GestionInformes.informeAlquileres();
                    break;
                default:
                    System.out.println("\n Opcion incorrecta. ");
                    break;
            }
        } while (i != 0);
    }

    public static void menuTarifa() {

        int i;
        int cod;
        int opc;
        String nom;
        String valor;


        do {
            System.out.println("-------------------------------");
            System.out.println("            MENU TARIFA        ");
            System.out.println("-------------------------------");
            System.out.println("1. Mostrar Tarifas existentes");
            System.out.println("2. Añadir Tarifa");
            System.out.println("3. Modificar Tarifa");
            System.out.println("0. Salir");
            i = ObtenerTeclado.dameEntero("Introduzca la opcion elegida");

            switch (i) {

                case 1:
                    System.out.println("-------------------------------");
                    System.out.println("         MOSTRAR TARIFAS      ");
                    System.out.println("-------------------------------");
                    GestionTarifa.mostrarTarifas();
                    break;

                case 2:
                    System.out.println("-------------------------------");
                    System.out.println("          AÑADIR TARIFAS       ");
                    System.out.println("-------------------------------");
                    String desc = ObtenerTeclado.dameCadena("Introduzca la descripcion");
                    Float pA = ObtenerTeclado.dameFloat("Introduzca el precio de alquiler");
                    Float pV = ObtenerTeclado.dameFloat("Introduzca el precio de venta");
                    int dias = ObtenerTeclado.dameEntero("Introduzca los dias que permite de alquiler la tarifa");
                    GestionTarifa.addTarifa(desc, pA, pV, dias);
                    break;

                case 3:
                    System.out.println("-------------------------------");
                    System.out.println("         MODIFICAR TARIFA      ");
                    System.out.println("-------------------------------");
                    //primero mostramos las tarifas existentes,despues debe introducir el id de la tarifa que desea modificar...
                    GestionTarifa.mostrarTarifas();
                    cod = ObtenerTeclado.dameEntero("Introduzca el codigo que desea modificar");
                    System.out.println("1. Descripcion");
                    System.out.println("2. Precio Alquiler");
                    System.out.println("3. Precio Venta");
                    System.out.println("4. Dias que permite de alquiler");
                    opc = ObtenerTeclado.dameEntero("Introduzca el numero del campo que desea modificar: ");

                    switch (opc) {

                        case 1:
                            nom = "descripcion";
                            valor = ObtenerTeclado.dameCadena("Introduzca la descripcion");
                            GestionTarifa.modificarTarifa(cod, nom, valor);
                            break;

                        case 2:
                            nom = "precioAlquiler";
                            valor = ObtenerTeclado.dameCadena("Introduzca el precio de alquiler");
                            GestionTarifa.modificarTarifa(cod, nom, valor);
                            break;

                        case 3:
                            nom = "precioVenta";
                            valor = ObtenerTeclado.dameCadena("Introduzca el precio de venta");
                            GestionTarifa.modificarTarifa(cod, nom, valor);
                            break;

                        case 4:
                            nom = "diasAlquiler";
                            valor = ObtenerTeclado.dameCadena("Introduzca los dias que permite de alquiler la tarifa");
                            GestionTarifa.modificarTarifa(cod, nom, valor);
                            break;

                        default:
                            System.out.println("\n Opcion incorrecta. ");
                            break;
                    }
                    break;

                default:
                    System.out.println("\n Opcion incorrecta. ");
                    break;

            }

        } while (i != 0);
    }

    public static void menuProveedor() {
        int i;
        do {
            System.out.println("-------------------------------");
            System.out.println("           MENU PROVEEDOR      ");
            System.out.println("-------------------------------");
            System.out.println("1. Alta proveedor");
            System.out.println("2. Baja de proveedor");
            System.out.println("3. Modificar proveedor");
            System.out.println("4. Mostrar proveedores");
            System.out.println("0. Salir");
            i = ObtenerTeclado.dameEntero("Introduzca la opcion elegida");
            switch (i) {
                case 1:
                    System.out.println("-------------------------------");
                    System.out.println("           ALTA PROVEEDOR      ");
                    System.out.println("-------------------------------");
                    String nombre = ObtenerTeclado.dameCadena("Introduzca el nombre del proveedor");
                    GestionProveedor.altaProveedor(nombre);
                    break;
                case 2:
                    System.out.println("-------------------------------");
                    System.out.println("           BAJA PROVEEDOR      ");
                    System.out.println("-------------------------------");
                    GestionProveedor.mostrarProveedores();
                    int id = ObtenerTeclado.dameEntero("Introduzca el id del proveedor a borrar");
                    //Controla que haya algun proveedor con esa id y lo muestra
                    boolean valido = GestionProveedor.obtenerProveedor(id);
                    if (valido) {
                        System.out.println("¿Seguro que desea borrar el proveedor mostrado?");
                        System.out.println("1. Si");
                        System.out.println("2. No");
                        System.out.println("Por defecto: proveedor no borrado");
                        int s = ObtenerTeclado.dameEntero("Introduzca opcion");
                        switch (s) {
                            case 1:
                                GestionProveedor.bajaProveedor();
                                break;
                            case 2:
                                System.out.println("Proveedor no borrado");
                                break;
                            default:
                                System.out.println("Proveedor no borrado");
                                break;
                        }
                    }
                    break;
                case 3:
                    System.out.println("-------------------------------");
                    System.out.println("        MODIFICAR PROVEEDOR    ");
                    System.out.println("-------------------------------");
                    GestionProveedor.mostrarProveedores();
                    id = ObtenerTeclado.dameEntero("Introduzca el id del proveedor a modificar");
                    //Controla que haya algun proveedor con esa id y lo muestra
                    valido = GestionProveedor.obtenerProveedor(id);
                    if (valido) {
                        nombre = ObtenerTeclado.dameCadena("Introduzca nuevo nombre del proveedor");
                        System.out.println("¿Seguro que desea cambiar el nombre del proveedor por " + nombre + "?");
                        System.out.println("1. Si");
                        System.out.println("2. No");
                        System.out.println("Por defecto: proveedor no modificado");
                        int s = ObtenerTeclado.dameEntero("Introduzca opcion");
                        switch (s) {
                            case 1:
                                GestionProveedor.modificarProveedor(nombre);
                                break;
                            case 2:
                                System.out.println("Proveedor no modificado");
                                break;
                            default:
                                System.out.println("Proveedor no modificado");
                                break;

                        }
                    }

                    break;
                case 4:
                    System.out.println("-------------------------------");
                    System.out.println("        MOSTRAR PROVEEDORES    ");
                    System.out.println("-------------------------------");
                    GestionProveedor.mostrarProveedores();
                    break;

                default:
                    System.out.println("\n Opcion incorrecta. ");
                    break;
            }

        } while (i != 0);
    }

    public static void menuEmpleados() {
        int op;
        do {
            System.out.println("-------------------------------");
            System.out.println("           MENU EMPLEADOS      ");
            System.out.println("-------------------------------");
            System.out.println("1. Mostrar empleados");
            System.out.println("2. Añadir empleado");
            System.out.println("3. Eliminar empleado");
            System.out.println("4. Modificar empleado");
            System.out.println("0. Salir");
            op = ObtenerTeclado.dameEntero("Introduzca la opcion elegida");
            switch (op) {
                case 1:
                    System.out.println("-------------------------------");
                    System.out.println("        MOSTRAR EMPLEADOS      ");
                    System.out.println("-------------------------------");
                    GestionEmpleado.mostrarDependientes();
                    break;
                case 2:
                    System.out.println("-------------------------------");
                    System.out.println("         AÑADIR EMPLEADOS      ");
                    System.out.println("-------------------------------");
                    String nombre = ObtenerTeclado.dameCadena("Introduzca el nombre");
                    String apellidos = ObtenerTeclado.dameCadena("Introduzca los apellidos");
                    String dni = ObtenerTeclado.dameCadena("Introduzca el dni");
                    String domicilio = ObtenerTeclado.dameCadena("Introduzca el domicilio");
                    String telefono = ObtenerTeclado.dameCadena("Introduzca el telefono");
                    String email = ObtenerTeclado.dameCadena("Introduzca el e-mail");
                    //Comprobar si existe el nombre de usuario en la BBDD
                    boolean comprobar = false;
                    String nomusuario;
                    do {
                        nomusuario = ObtenerTeclado.dameCadena("Introduzca el nombre de usuario para su login");
                        if (GestionEmpleado.verificarUsuario(nomusuario)) {
                            comprobar = true;
                        } else {
                            System.out.println("Nombre de usuario ya existe. Introduzca uno nuevo");
                        }
                    } while (!comprobar);
                    //Comprobar si el pin es correcto
                    comprobar = false;
                    int pin = 0;
                    do {
                        pin = ObtenerTeclado.dameEntero("Introduzca el pin");
                        int pin2 = ObtenerTeclado.dameEntero("Introduzca de nuevo el pin");
                        if (pin == pin2) {
                            comprobar = true;
                        }
                    } while (!comprobar);
                    GestionEmpleado.addDependiente(nombre, apellidos, dni, domicilio, telefono, email, nomusuario, pin);
                    break;
                case 3:
                    System.out.println("-------------------------------");
                    System.out.println("           ELIMINAR EMPLEADO      ");
                    System.out.println("-------------------------------");
                    GestionEmpleado.mostrarDependientes();
                    int cod = ObtenerTeclado.dameEntero("Introduzca el id del empleado a eliminar");
                    GestionEmpleado.eliminarEmpleado(cod);
                    break;
                case 4:
                    System.out.println("-------------------------------");
                    System.out.println("       MODIFICAR EMPLEADO      ");
                    System.out.println("-------------------------------");
                    GestionEmpleado.mostrarDependientes();
                    cod = ObtenerTeclado.dameEntero("Introduzca el id del empleado a modificar");
                    int opcion;
                    do {
                        System.out.println("-------------------------------");
                        System.out.println("       MODIFICAR EMPLEADO      ");
                        System.out.println("-------------------------------");
                        System.out.println("1. Modificar nombre");
                        System.out.println("2. Modificar apellidos");
                        System.out.println("3. Modificar domicilio");
                        System.out.println("4. Modificar dni");
                        System.out.println("5. Modificar telefono");
                        System.out.println("6. Modificar e-mail");
                        System.out.println("7. Modificar Nombre de usuario para login");
                        System.out.println("8. Modificar pin");
                        System.out.println("0. Salir");
                        opcion = ObtenerTeclado.dameEntero("Introduzca la opcion deseada");
                        switch (opcion) {
                            case 1:
                                String valor = ObtenerTeclado.dameCadena("Introduzca el nuevo nombre");
                                GestionEmpleado.modificarEmpleado(cod, "nombre", valor);
                                break;
                            case 2:
                                valor = ObtenerTeclado.dameCadena("Introduzca los nuevos apellidos");
                                GestionEmpleado.modificarEmpleado(cod, "apellidos", valor);
                                break;
                            case 3:
                                valor = ObtenerTeclado.dameCadena("Introduzca el nuevo domicilio");
                                GestionEmpleado.modificarEmpleado(cod, "domicilio", valor);
                                break;
                            case 4:
                                valor = ObtenerTeclado.dameCadena("Introduzca el nuevo dni");
                                GestionEmpleado.modificarEmpleado(cod, "dni", valor);
                                break;
                            case 5:
                                valor = ObtenerTeclado.dameCadena("Introduzca el nuevo telefono");
                                GestionEmpleado.modificarEmpleado(cod, "telefono", valor);
                                break;
                            case 6:
                                valor = ObtenerTeclado.dameCadena("Introduzca el nuevo e-mail");
                                GestionEmpleado.modificarEmpleado(cod, "email", valor);
                                break;
                            case 7:
                                //Comprobar si existe el nombre de usuario en la BBDD
                                comprobar = false;
                                do {
                                    valor = ObtenerTeclado.dameCadena("Introduzca el nombre de usuario para su login");
                                    if (GestionEmpleado.verificarUsuario(valor)) {
                                        comprobar = true;
                                    }
                                } while (!comprobar);
                                GestionEmpleado.modificarEmpleado(cod, "nombreusuario", valor);
                                break;
                            case 8:
                                comprobar = false;
                                do {
                                    valor = ObtenerTeclado.dameCadena("Introduzca el pin");
                                    String valor2 = ObtenerTeclado.dameCadena("Introduzca de nuevo el pin");
                                    if (valor.compareTo(valor2) == 0) {
                                        comprobar = true;
                                    }
                                } while (!comprobar);
                                GestionEmpleado.modificarEmpleado(cod, "pin", valor);
                                break;

                            default:
                                System.out.println("\n Opcion incorrecta. ");
                                break;
                        }
                    } while (opcion != 0);
                    break;

                default:
                    System.out.println("\n Opcion incorrecta. ");
                    break;
            }
        } while (op != 0);
    }

    public static void menuEncargado() {
        int op;
        do {
            System.out.println("-------------------------------");
            System.out.println("         MENU ENCARGADO        ");
            System.out.println("-------------------------------");
            System.out.println("1. Hacer encargado a un empleado");
            System.out.println("2. Dar de alta un nuevo encargado");
            System.out.println("3. Modificar datos de un encargado");
            System.out.println("4. Mostrar encargados");
            System.out.println("0. Salir");
            op = ObtenerTeclado.dameEntero("Introduzca la opcion elegida");
            switch (op) {
                case 1:
                    System.out.println("-------------------------------");
                    System.out.println("         HACER ENCARGADO        ");
                    System.out.println("-------------------------------");
                    GestionEmpleado.mostrarDependientes();
                    int cod = ObtenerTeclado.dameEntero("Introduzca la id del empleado elegido");
                    GestionEmpleado.modificarEmpleado(cod, "encargado", "1");
                    break;
                case 2:
                    System.out.println("-------------------------------");
                    System.out.println("         ALTA ENCARGADO        ");
                    System.out.println("-------------------------------");
                    String nombre = ObtenerTeclado.dameCadena("Introduzca el nombre");
                    String apellidos = ObtenerTeclado.dameCadena("Introduzca los apellidos");
                    String dni = ObtenerTeclado.dameCadena("Introduzca el dni");
                    String domicilio = ObtenerTeclado.dameCadena("Introduzca el domicilio");
                    String telefono = ObtenerTeclado.dameCadena("Introduzca el telefono");
                    String email = ObtenerTeclado.dameCadena("Introduzca el e-mail");
                    //Comprobar si existe el nombre de usuario en la BBDD
                    boolean comprobar = false;
                    String nomusuario;
                    do {
                        nomusuario = ObtenerTeclado.dameCadena("Introduzca el nombre de usuario para su login");
                        if (GestionEmpleado.verificarUsuario(nomusuario)) {
                            comprobar = true;
                        } else {
                            System.out.println("Nombre de usuario ya existe. Introduzca uno nuevo");
                        }
                    } while (!comprobar);
                    //Comprobar si el pin es correcto
                    comprobar = false;
                    int pin = 0;
                    do {
                        pin = ObtenerTeclado.dameEntero("Introduzca el pin");
                        int pin2 = ObtenerTeclado.dameEntero("Introduzca de nuevo el pin");
                        if (pin == pin2) {
                            comprobar = true;
                        }
                    } while (!comprobar);
                    GestionEmpleado.addEncargado(nombre, apellidos, dni, domicilio, telefono, email, nomusuario, pin);
                    break;
                case 3:
                    System.out.println("-------------------------------");
                    System.out.println("         MODIFICAR ENCARGADO        ");
                    System.out.println("-------------------------------");
                    GestionEmpleado.mostrarEncargados();
                    cod = ObtenerTeclado.dameEntero("Introduzca el id del empleado a modificar");
                    int opcion;
                    do {
                        System.out.println("1. Modificar nombre");
                        System.out.println("2. Modificar apellidos");
                        System.out.println("3. Modificar domicilio");
                        System.out.println("4. Modificar dni");
                        System.out.println("5. Modificar telefono");
                        System.out.println("6. Modificar e-mail");
                        System.out.println("7. Modificar Nombre de usuario para login");
                        System.out.println("8. Modificar pin");
                        System.out.println("0. Salir");
                        opcion = ObtenerTeclado.dameEntero("Introduzca la opcion deseada");
                        switch (opcion) {
                            case 1:
                                String valor = ObtenerTeclado.dameCadena("Introduzca el nuevo nombre");
                                GestionEmpleado.modificarEmpleado(cod, "nombre", valor);
                                break;
                            case 2:
                                valor = ObtenerTeclado.dameCadena("Introduzca los nuevos apellidos");
                                GestionEmpleado.modificarEmpleado(cod, "apellidos", valor);
                                break;
                            case 3:
                                valor = ObtenerTeclado.dameCadena("Introduzca el nuevo domicilio");
                                GestionEmpleado.modificarEmpleado(cod, "domicilio", valor);
                                break;
                            case 4:
                                valor = ObtenerTeclado.dameCadena("Introduzca el nuevo dni");
                                GestionEmpleado.modificarEmpleado(cod, "dni", valor);
                                break;
                            case 5:
                                valor = ObtenerTeclado.dameCadena("Introduzca el nuevo telefono");
                                GestionEmpleado.modificarEmpleado(cod, "telefono", valor);
                                break;
                            case 6:
                                valor = ObtenerTeclado.dameCadena("Introduzca el nuevo e-mail");
                                GestionEmpleado.modificarEmpleado(cod, "email", valor);
                                break;
                            case 7:
                                //Comprobar si existe el nombre de usuario en la BBDD
                                comprobar = false;
                                do {
                                    valor = ObtenerTeclado.dameCadena("Introduzca el nombre de usuario para su login");
                                    if (GestionEmpleado.verificarUsuario(valor)) {
                                        comprobar = true;
                                    }
                                } while (!comprobar);
                                GestionEmpleado.modificarEmpleado(cod, "nombreusuario", valor);
                                break;
                            case 8:
                                comprobar = false;
                                do {
                                    valor = ObtenerTeclado.dameCadena("Introduzca el pin");
                                    String valor2 = ObtenerTeclado.dameCadena("Introduzca de nuevo el pin");
                                    if (valor.compareTo(valor2) == 0) {
                                        comprobar = true;
                                    }
                                } while (!comprobar);
                                GestionEmpleado.modificarEmpleado(cod, "pin", valor);
                                break;

                            default:
                                System.out.println("\n Opcion incorrecta. ");
                                break;
                        }
                    } while (opcion != 0);
                    break;
                case 4:
                    System.out.println("-------------------------------");
                    System.out.println("       MOSTRAR ENCARGADO        ");
                    System.out.println("-------------------------------");
                    GestionEmpleado.mostrarEncargados();
                    break;

                default:
                    System.out.println("\n Opcion incorrecta. ");
                    break;
            }
        } while (op != 0);
    }

    public static void menuIncidencias(Empleado e) {

        int op;
        System.out.println("-------------------------------");
        System.out.println("         MENU INCIDENCIA        ");
        System.out.println("-------------------------------");
        System.out.println("1. Rellenar incidencia");
        System.out.println("2. Mostrar incidencias");
        System.out.println("0. Salir");
        op = ObtenerTeclado.dameEntero("Introduzca la opcion elegida");
        switch (op) {
            case 1:
                System.out.println("-------------------------------");
                System.out.println("       NUEVA INCIDENCIA        ");
                System.out.println("-------------------------------");
                String desc = ObtenerTeclado.dameCadena("Introduzca la descripcion de la incidencia");
                GestionEmpleado.addIncidencia(e, desc);
                break;
            case 2:
                System.out.println("-------------------------------");
                System.out.println("       MOSTRAR INCIDENCIAS     ");
                System.out.println("-------------------------------");
                GestionEmpleado.mostrarIncidencias();
                break;
        }
    }

    private static void menuSaldo(Cliente cliente) {

        int j = 1;
        float saldo;

        do {
            System.out.println("-------------------------------");
            System.out.println("           MENU SALDO          ");
            System.out.println("-------------------------------");
            System.out.println("1. Mostrar Saldo");
            System.out.println("2. Recargar Saldo");
            System.out.println("0. Salir");
            j = ObtenerTeclado.dameEntero("Introduzca una opcion");

            switch (j) {
                case 1:
                    System.out.println("-------------------------------");
                    System.out.println("         MOSTRAR SALDO        ");
                    System.out.println("-------------------------------");
                    GestionSaldo.mostrarSaldo(cliente);
                    break;
                case 2:
                    System.out.println("-------------------------------");
                    System.out.println("         RECARGAR SALDO        ");
                    System.out.println("-------------------------------");
                    saldo = ObtenerTeclado.dameFloat("Introduzca cantidad a recargar");
                    GestionMovimientos.addMovimiento(cliente, saldo, "Recarga de saldo");
                    GestionSaldo.recargarSaldo(saldo, cliente);
                    break;

                default:
                    System.out.println("\n Opcion incorrecta. ");
                    break;

            }
        } while (j != 0);

    }
}
